iT邦幫忙

2022 iThome 鐵人賽

DAY 14
0
Mobile Development

IOS新手之旅系列 第 14

IOS新手之旅 Day14:單例傳值

  • 分享至 

  • xImage
  •  

昨天用好所有的設定畫面,今天要來處理畫面間傳值的問題。

由於之前用protocol的方式只能反向傳值,但是今天是一堆畫面間傳值,不適用這種方法,所以換種方法來處理傳值的問題。

單例傳值

首先是先建立一個新的swift檔案,裡面的程式碼大概像下面這樣,將要傳遞的值存放在這個檔案裡。

import Foundation

class addPageValue {
    
    static let pageValue = addPageValue()
    
    var addStruct = true
    var selectCell = 0
    var pickHour = 0
    var pickMinute = 0
    var repeatDayCheck = [false, false, false, false, false, false, false]
    var labelText = ""
    var soundSource = ["口哨", "平靜", "活潑", "音效", "音樂盒", "悅耳", "清脆", "網球"]
    var soundSelect = 0
    var switchOnOff = true
    
    private init() {}
}

更改

然後將畫面裡需要傳遞的變數,全部取代。

這裡以鈴聲畫面作為例子,這樣在其他畫面也能收到在鈴聲畫面的內容。

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        addPageValue.pageValue.soundSource.count
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = soundPageTableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! SoundPageTableViewCell
        
        cell.SoundLabel.text = addPageValue.pageValue.soundSource[indexPath.row]
        
        if addPageValue.pageValue.soundSelect == indexPath.row {
            cell.accessoryType = .checkmark
        }else{
            cell.accessoryType = .none
        }
        
        return cell
    }
    
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        addPageValue.pageValue.soundSelect = indexPath.row
        
        soundPageTableView.reloadData()
    }

今天就大概介紹到這裡,明天就能開始完善新增畫面。


上一篇
IOS新手之旅 Day13:鬧鐘(3)
下一篇
IOS新手之旅 Day15:鬧鐘(4)
系列文
IOS新手之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言